﻿namespace DotNetStar.OpenSDK.QQ
{
    using OAuth;

    /// <summary>
    /// 获取 QQ 互联的授权码。
    /// </summary>
    public class QQAuthorizeCodeApiRequest : AuthorizeCodeApiRequest
    {
        /// <summary>
        /// 初始化 <see cref="QQAuthorizeCodeApiRequest"/> 类的新实例。
        /// </summary>
        /// <param name="config">OAuth2.0 的配置。</param>
        public QQAuthorizeCodeApiRequest(OAuthConfig config)
            : base("https://graph.qq.com/oauth2.0/authorize", config)
        {
        }

        /// <summary>
        /// 获取请求用户授权时向用户显示的可进行授权的列表，多个“,”分割。http://wiki.connect.qq.com/api%E5%88%97%E8%A1%A8
        /// </summary>
        public string Scopes { get; set; } = "get_user_info";

        /// <summary>
        /// 获取一个布尔值，表示用于展示的样式是 PC 还是移动端。
        /// </summary>
        /// <value>
        ///   如果是 PC 端，为 <c>true</c>; 否则为 <c>false</c>.
        /// </value>
        [ArgumentIgnore]
        public bool PcOrMobile { get; set; } = true;

        /// <summary>
        /// 获取显示的样式字符串。
        /// </summary>
        public string Display => this.PcOrMobile ? "pc" : "mobile";

        /// <summary>
        /// 获取客户端 id。
        /// </summary>
        public string Client_Id => Config.ClientId;
        /// <summary>
        /// 获取配置的回调 url。
        /// </summary>
        public string Redirect_Uri => Config.RedirectUri;

        /// <summary>
        /// 获取响应的类型。
        /// </summary>
        public string Response_Type => "code";
    }
}
